// 论坛板块
// by indraw 2013.01.01
package bbs

import (
    "utils/util"
    "utils/web"
    "strconv"
    "os"
    //"fmt"
)

//定义变量

/**
 * 登录程序
 *
 * author: indraw
 * date: 2013-01-01
 */
func UserLogin(ctx *web.Context) string {
	//初始化
	initApp(ctx)
	
	//执行操作
    if ctx.Params["act"] == "do"{

	    user := newUser()
	    user.setEmail( ctx.Params["email"] )
		//执行检索
		if err := user.getByEmail(); err != nil {
			return tpl.Error("用户名不存在")
		}
	    if ctx.Params["passwd"] != user.Passwd{
	        return tpl.Error("输入密码错误")
		}
        //更新用户登录信息
        user.Lastip = util.GetUserIP(ctx.Request)
        user.updateLogin()
        
		//删除相同ID
		online :=  newOnline()
		online.Userid = user.getUserid()
		online.deleteByUser()
		
		//写入session
		session.Set("userid",user.getUserid())
		session.Set("username",user.Username)
		session.Set("groupid",strconv.Itoa(user.Groupid))
		session.Set("hidden","0")

		return tpl.Success("登录成功")

    }

    
    return tpl.Display("user_login.html")
}

/**
 * 登录程序
 *
 * author: indraw
 * date: 2013-01-01
 */
func UserLogout(ctx *web.Context) string {
	//初始化
	initApp(ctx)
	
	//写入session
	session.Clear()

	return tpl.Success("退出登录")


}

/**
 * 注册程序
 *
 * author: indraw
 * date: 2013-01-01
 */
func UserRegister(ctx *web.Context) string  {
	//初始化
	initApp(ctx)
	
    if ctx.Params["act"] == "do"{
        //
        SessPic,_ := session.Get("pic")
        if SessPic != ctx.Params["pic"] {
            return tpl.Error("验证码输入错误")
        }
        
        //判断两次输入密码是否一致
        if ctx.Params["passwd"] != ctx.Params["passwd2"] {
            return tpl.Error("两次输入的密码不一致")
        }
        //填充数据
        user := newUser()
        user.setUsername( ctx.Params["username"] )
        user.setEmail( ctx.Params["email"] )
        user.setPasswd( ctx.Params["passwd"] )
        user.Firstip = util.GetUserIP(ctx.Request)

        //执行写入数据库
        if err := user.add(); err != nil {
            return tpl.Error(err.Error())
        }
        return tpl.Success("成功注册！")
        
    }
    
    //显示注册页面
    return tpl.Display("user_register.html")

}

/**
 * 用户列表
 *
 * author: indraw
 * date: 2013-01-01
 */
func UserList(ctx *web.Context) string  {
	//初始化
	initApp(ctx)
	
	//执行操作
    user := newUser()

    //获取分页信息
    num := user.count()
    
    var p int
    p, _ = strconv.Atoi(ctx.Params["p"])
    page := util.NewPageMaker(num, p, "list")
    
    //获取用户信息
    userList := user.list(page)
    
    tpl.Assign("UserList", userList)
    tpl.Assign("UserNum", page)
    //tpl.Assign("UserID", page.Top)

	//写入session
		
    return tpl.Display("user_list.html")

}


/**
 * 用户信息
 *
 * author: indraw
 * date: 2013-02-01
 */
func UserView(ctx *web.Context, userid string) string {

	//初始化
	initApp(ctx)
	
    user := newUser()
    user.setUserid(userid)
    //获取信息
    if err := user.get(); err != nil {
        return tpl.Error(err.Error())
    }
    //
    if user.Photo == ""{
        user.Photo = "000.jpg"
    }
    tpl.Assign("User", user)
    return tpl.Display("user.html")

}

/**
 * 用户收藏
 *
 * author: indraw
 * date: 2013-02-01
 */
func UserFavorite(ctx *web.Context) string {
    return "程序开发中，请耐心等待。"


}


/**
 * 用户信息修改
 *
 * author: indraw
 * date: 2013-01-01
 */
func UserSelfInfo(ctx *web.Context) string  {
	//初始化
	initApp(ctx)

	SessUserID,_ := session.Get("userid")
	if SessUserID == ""{
		return tpl.Success("登录后才可以修改")

	}
    if ctx.Params["act"] == "do"{
        //
        user := newUser()
        user.setUserid(SessUserID)
        
        user.setAlias(ctx.Params["alias"])
        user.setLocation(ctx.Params["location"])
        user.setPhoto(ctx.Params["selects"])
        user.setSigstate(ctx.Params["sigstate"])
        user.setSight(ctx.Params["sight"])
        if err := user.updateInfo(); err != nil {
            return tpl.Error(err.Error())
        }
        
        return tpl.Success("成功修改个人资料！")
        
    }
    
    user := newUser()
    user.setUserid(SessUserID)
    //获取信息
    if err := user.get(); err != nil {
        return tpl.Error(err.Error())
    }
    //
    if user.Photo == ""{
        user.Photo = "000.jpg"
    }
    
    //获取分组
	group:= SysGroup[user.Groupid]
    
    //获取目录
    var filepic []string
    dir, _ := os.Open("bbs/static/images/avatars")
    files, _ := dir.Readdir(0)
    for _, f := range files {
        if !f.IsDir() {
            //fmt.Println(f.Name())
            filepic = append(filepic,f.Name())
        }
    } 
    //fmt.Println(filepic[2])
    
    //赋值操作
    tpl.Assign("User", user)
    tpl.Assign("Group", group)
    tpl.Assign("Filepic", filepic)

    //显示注册页面
    return tpl.Display("self.html")

}

